<?php

/*给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
 *你可以假设每种输入只会对应一个答案。但是，你不能重复利用这个数组中同样的元素。
 *示例:
 *   给定 nums = [2, 7, 11, 15], target = 9
 *   因为 nums[0] + nums[1] = 2 + 7 = 9
 *   所以 返回 [0, 1]
*/

class TwoSum
{

    public static function getTwoSum(array $nums, $target)
    {
        foreach ($nums as $k => $v) {
            for ($i = $k; $i < count($nums); $i++) {
                if ($nums[$i] != $v) {
                    $sum = $v + $nums[$i];
                    if ($sum == $target) echo '[' . $k . ',' . $i . ']' . PHP_EOL;
                }
            }
        }
    }

    public static function getTwoSum2(array $nums, $target)
    {
        while (1) {
            $getTwoNums = array_rand($nums, 2);
            $sum = $nums[$getTwoNums[0]] + $nums[$getTwoNums[1]];
            if ($sum == $target) {
                echo '[' . $getTwoNums[0] . ',' . $getTwoNums[1] . ']' . PHP_EOL;
                break;
            }
        }
    }
}

//example 1
(new TwoSum())::getTwoSum([12, 5, 3, 8, 7, 9], 10);

//example 2
(new TwoSum())::getTwoSum2([12, 5, 3, 8, 7, 9], 10);